/*!
 * \file nuPoint.h
 * \brief Point class.
 * \author Nus
 * \date 2008/03/10, 00:34
 */

#ifndef __NUPOINT_H__
#define __NUPOINT_H__

#include "Types.h"

/*!
 * \class nuPoint
 * \brief Point class.
 */
class nuPoint
{
public:
  //! \brief Default constructor.
  nuPoint(f32 xp = 0.0f, f32 yp = 0.0f)
      : X(xp),
        Y(yp)
  {
    // None...
  }

  //! \brief Constructor.
  nuPoint(const nuPoint& point)
      : X(point.X),
        Y(point.Y)
  {
    // None...
  }

  //! \brief Default destructor.
  ~nuPoint() {
    // None...
  }
  
  //! \brief Assign operator.
  inline nuPoint& operator = (const nuPoint& point);
  
  //! \brief Add operator.
  inline nuPoint operator + (const nuPoint& point) const;
  
  //! \brief Subtract operator.
  inline nuPoint operator - (const nuPoint& point) const;
  
  //! \brief Subtract operator.
  inline nuPoint operator * (f32 val) const;

  //! \brief Subtract operator.
  inline nuPoint operator / (f32 val) const;

  f32 X;                          //!< X.
  f32 Y;                          //!< Y.

protected:
  // None...

private:
  // None...

};

#include "inlinePoint.h"

#endif
